Mac M1でServerless frameworkを利用してLambdaを作成
こんにちは、クラスメソッドのキム・ジェウク(Kim Jaewook)と申します。今回はMac M1でServerless frameworkを利用し、Lambdaを作成する過程を整理してみました。
Serverless frameworkとは?
Amazon Web Servicesの一部としてAmazonが提供するサーバーレスコンピューティングプラットフォーム「AWS Lambda」で、アプリケーションを構築するために開発されたその最初のフレームワークである。
- Azure Functions
- AWS Lambda
- Google Cloud Functions
このようなserverless functionはいつも実行する必要がないので、かなりのインフラコストを削減する効果があります。つまり、functionが実行される時だけ資源を使用する方式となります。
MacでServerless frameworkをInstall
では、MacでServerless frameworkをインストールしましょう。
まず、Serverless frameworkをインストールするためにパッケージマネージャーが必要です。自分は「macOS(またはLinux)用パッケージマネージャー」である、Homebrewをインストールしました。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
このコマンドでHomebrewをインストールするとき、「Warning: /opt/homebrew/bin is not in your PATH」というエラーが出る時もあります。このエラーが出たらコンソールで「export PATH=/opt/homebrew/bin:$PATH」コマンドを実行して、再度Homebrewをインストールしたら問題なくインストールされます。
brew install serverless
その後、brewを使って、Serverless freameworkをインストールします。インストールが終わったら、「serverless -v」コマンドを実行して、ちゃんとインストールされたのか確認します。
Serverless frameworkの設定
~/.aws/credentials
続いて、credentialsにProfileを設定します。
[role] region = ap-northeast-2 mfa_serial = arn:aws:iam::/cm-kim.jaewook role_arn = arn:aws:iam::cm-kim.jaewook aws_access_key_id= aws_secret_access_key= source_profile = default
自分は簡単に「role」という名前でProfileを作成しました。
serverless config credentials --provider aws --key <ACCESS KEY ID> --secret <SECRET KEY>
serverless configコマンドでServerlessを構成します。Keyを資格証明ファイルに保存すると、各コマンドでProfileを指定し、他のServerlessコマンドを実行することができます。
それでは、Lambdaを作成してみましょう。
serverless create --template aws-python3 --name hello-world
このコマンドでPython3をBaseにするLambdaを作成することができます。コマンドを実行した後、Folderを見ると、Handler file、構成File、および.gitignore Fileが作成されます。
provider: name: aws runtime: python3.6 functions: hello: handler: handler.hello
serverless.ymlファイルの内容です。ここで、IamRoleを設定したり、Lambda Eventを設定することができます。
import json def hello(event, context): body = { "message": "Go Serverless v1.0! Your function executed successfully!", "input": event } response = { "statusCode": 200, "body": json.dumps(body) } return response
Handler.pyの内容です。
では、Serverless frameworkでLambdaを配布してみましょう。
export AWS_PROFILE="role" serverless deploy
先、設定したProfileの名前を入れます。そして、デプロイすると、AWSにLambdaが配布されます。
最後に
Serverless frameworkを初めて使ってみましたが、Lambdaを作成して配布するまで、すごく簡単でビックリしました。後で機会があったらもっと色んなframeworkを使ってみたいと思います。